package com.nuoniu.sibanyun.service.erp.in;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nuoniu.sibanyun.entity.bo.UsedGradeRuleBo;
import com.nuoniu.sibanyun.entity.erp.in.InWarehouse;

import java.util.List;
import java.util.Set;

/**
 * <p>
 * 仓库管理 服务类
 * </p>
 *
 * @author baiqiang
 * @since 2020-09-22
 */
public interface IInWarehouseService extends IService<InWarehouse> {

    /**
     * 仓库列表
     * @author 小啊刚
     * @date 2020-09-23
     */
    Page<InWarehouse> pageList(Page page, InWarehouse inWarehouse);

    /**
     * 保存 仓库
     * @param inWarehouse
     */
    void saveInWarehouse(InWarehouse inWarehouse);

    /**
     * code查重
     * @author 小啊刚
     * @date 2020-09-28
     */
    InWarehouse getByCode(InWarehouse inWarehouse);

    /**
     * name查重
     * @author 小啊刚
     * @date 2020-09-30
     */
    InWarehouse getByName(InWarehouse inWarehouse);


    /**
     * 获取 当前用户 管理的仓库ID
     * @return
     */
    List<Long> myWarehouseIds();

    /**
     * 根据用户ID 清除缓存
     * @param userIds
     */
    void clearMyWarehouseIdsRedis(Set<String> userIds);

    /**
     * 是否 具有该仓库的操作权限
     * @param inWarehouseId
     * @return
     */
    boolean isHaveOperationRight(Long inWarehouseId);

    /**
     * 是否 货位管理
     * @param inWarehouseId
     * @return
     */
    boolean isHaveInInventoryLocation(Long inWarehouseId);

    /**
     * 获取 我可以操作的 仓库
     * @return
     */
    List<InWarehouse> listMyOperationInWarehouses(String keyWord);

    /**
     * 获取 公司全部的仓库
     * @return
     */
    List<InWarehouse> listCompanyInWarehouses(String keyWord);

    /**
     * 获取 库管员IDS
     * @param ids 仓库IDS
     * @return
     */
    List<String> getKeepers(List<Integer> ids);



}
